// 从 'element-plus/es/components/dialog' 导入 ElDialog 类型，这是 Element Plus UI 库中的对话框组件类型
// @ts-ignore
import type { ElDialog } from 'element-plus/es/components/dialog';

/**
 * 弹窗对外暴露的方法接口
 * 这个接口定义了弹窗组件提供给外部使用的一系列方法
 */
export interface ModalMethods {
  // setProps 方法，用于动态设置弹窗组件的属性，参数 props 是一个对象，返回类型为 void
  setProps: (props) => void;
  // openModal 方法，用于打开弹窗，返回类型为 void
  openModal: () => void;
  // closeModal 方法，用于关闭弹窗，返回类型为 void
  closeModal: () => void;
  // setSubLoading 方法，用于设置弹窗的子组件加载状态，参数 status 可能是一个布尔值，返回类型为 void
  setSubLoading: (status?: boolean) => void;
}

/**
 * 支持修改，ElDialog 参数
 * 这个类型别名定义了 ModalProps，它等同于 Element Plus 的 ElDialog 组件的属性类型
 */
// @ts-ignore
export type ModalProps = ElDialog;

// RegisterFn 类型别名，定义了一个函数类型，该函数接收一个 ModalMethods 类型的参数，并返回 void
export type RegisterFn = (ModalInstance: ModalMethods) => void;

// UseModalReturnType 类型别名，定义了一个返回类型，该类型是一个数组，包含 RegisterFn 和 ModalMethods 类型
export type UseModalReturnType = [RegisterFn, ModalMethods];
